package nu.board.model;

import java.util.ArrayList;
import java.util.List;

import org.mybatis.spring.SqlSessionTemplate;

public class BoardDaoImpl implements BoardDao{
	private SqlSessionTemplate sqlSessionTemplate;
	public BoardDaoImpl(SqlSessionTemplate sqlSessionTemplate){
		this.sqlSessionTemplate=sqlSessionTemplate;
	}
	
	/**
	 * 그룹의 리스트를 가져오는 메소드
	 */
	@Override
	public List<GroupVO> selectGroupList(String category) throws Exception {
		return sqlSessionTemplate.selectList("board.selectGroupList", category);
	}

	/**
	 * 특정 그룹이 쓴 글을 가져오는 메소드
	 */
	@Override
	public List<BoardVO> selectPostingList(CategoryVO cvo) throws Exception {
		return sqlSessionTemplate.selectList("board.selectPostingList", cvo);
	}

	/**
	 * 특정 그룹이 쓴 글의 수를 가져오는 메소드
	 */
	@Override
	public int selectTotalPostingCount(CategoryVO cvo) throws Exception {
		return sqlSessionTemplate.selectOne("board.selectTotalPostingCount",cvo);
	}

	/**
	 * 글 내용을 보여주기 위해 글 정보를 가져오는 메소드
	 */
	@Override
	public BoardVO selectContent(int no) throws Exception {
		return sqlSessionTemplate.selectOne("board.selectContent",no);
	}

	/**
	 * 글의 히트수를 +1 시키는 메소드
	 */
	@Override
	public void updateHits(int no) throws Exception {
		sqlSessionTemplate.update("board.updateHits", no);
	}
	
	/**
	 * 댓글 입력!
	 */
	@Override
	public int insertReply(ReplyVO rvo) throws Exception {
		System.out.println("dao : "+rvo);
		return sqlSessionTemplate.insert("board.insertReply", rvo);
	}
	/**
	 * 글번호로 댓글리스트 받아오는 메소드
	 */
	@Override
	public List selectReplyListByBoardNo(int no) throws Exception {
		return sqlSessionTemplate.selectList("board.selectReplyListByBoardNo",no);
	}
	/**
	 * board에 글쓰는것
	 */
	@Override
	public int insertContent(BoardVO vo) throws Exception {
		return sqlSessionTemplate.insert("board.insertContent", vo);
	}
	/**
	 * group 생성하는 것
	 */
	@Override
	public int insertGroup(GroupVO gvo) throws Exception {
		return sqlSessionTemplate.insert("board.insertGroup", gvo);
	}

	@Override
	public void insertConfirmedBoardNoAndMemberId(ConfirmVO cfvo) throws Exception {
		sqlSessionTemplate.insert("board.insertConfirmedBoardNoAndMemberId",cfvo);
	}

	@Override
	public void updateConfirmationPlus(int no) throws Exception {
		sqlSessionTemplate.update("board.updateConfirmationPlus", no);
	}

	@Override
	public List<String> selectConfirmedIdListByBoardNo(int no)
			throws Exception {
		return sqlSessionTemplate.selectList("board.selectConfirmedIdListByBoardNo", no);
	}

	@Override
	public void insertPlan(PlanVO pvo) throws Exception {
		 sqlSessionTemplate.insert("board.insertPlan", pvo);
	}

	@Override
	public List<PlanVO> selectPlanListByGroupId(int group_id) throws Exception {
		return sqlSessionTemplate.selectList("board.selectPlanListByGroupId",group_id);
	}

	@Override
	public PlanVO selectPlanByPlanNo(int nu_plan_no) throws Exception {
		return sqlSessionTemplate.selectOne("board.selectPlanByPlanNo",nu_plan_no);
	}

}
